// /*
//  * @Author: zhengzhuang
//  * @Date: 2020-09-08 13:43:35
//  * @LastEditors: zhengzhuang
//  * @LastEditTime: 2020-09-25 09:22:14
//  * @Description: flutter_inappwebview flutter webView
//  * @FilePath: /C20Driver/lib/pages/general_module/flutter_inappwebview.dart
//  */
// import 'package:flutter/material.dart';
// import 'package:flutter_inappwebview/flutter_inappwebview.dart';
// import 'package:flutter_screenutil/flutter_screenutil.dart';
// import 'package:C20Driver/resources/res_index.dart';
// import 'package:C20Driver/routers/navigator_util.dart';
// import 'package:C20Driver/utils/locate_info.dart';
// import 'package:shared_preferences/shared_preferences.dart';
// import 'package:url_launcher/url_launcher.dart';
// import 'package:amap_location_fluttify/amap_location_fluttify.dart';

// class FlutterInappwebview extends StatefulWidget {
//   final String url;
//   FlutterInappwebview(this.url);
//   @override
//   _FlutterInappwebviewState createState() => _FlutterInappwebviewState();
// }

// class _FlutterInappwebviewState extends State<FlutterInappwebview> {
//   InAppWebViewController _webViewController;
//   String url = "";
//   double progress = 0.2;
//   String _title = '';

//   @override
//   Widget build(BuildContext context) {
//     return WillPopScope(
//         child: Scaffold(
//           appBar: AppBar(
//             title: Text('$_title'),
//             actions: <Widget>[
//               IconButton(
//                 icon: const Icon(Icons.close, color: Colors.white),
//                 onPressed: () => NavigatorUtil.goBack(context),
//               ),
//             ],
//           ),
//           body: Container(
//             child: Column(
//               children: <Widget>[
//                 // Container(
//                 //   padding: EdgeInsets.all(20.0),
//                 //   child: Text(
//                 //       "CURRENT URL\n${(url.length > 50) ? url.substring(0, 50) + "..." : url}"),
//                 // ),
//                 Container(
//                     child: progress < 1.0
//                         ? Container(
//                             height: ScreenUtil().setWidth(10.0),
//                             child: LinearProgressIndicator(
//                                 value: progress, backgroundColor: Colors.white),
//                           )
//                         : Container()),
//                 Expanded(
//                   child: InAppWebView(
//                       initialUrl: widget.url,
//                       initialHeaders: {},
//                       initialOptions: InAppWebViewGroupOptions(
//                           crossPlatform: InAppWebViewOptions(
//                         debuggingEnabled: false,
//                         clearCache: true,
//                         // useShouldOverrideUrlLoading: true
//                       )),
//                       onWebViewCreated: (InAppWebViewController controller) async {
//                         _webViewController = controller;
//                         // SharedPreferences prefs = await SharedPreferences.getInstance();
//                         // _webViewController.evaluateJavascript(source: "(function() { try { window.localStorage.setItem('token', '${prefs.getString(AppStorageInterface.LOGINTOKEN)}');return window.localStorage.authToken; } catch (err) { return err; } })();");

//                         controller.addJavaScriptHandler(handlerName: 'getAppToken', callback: (args) async {
//                           // return data to JavaScript side!
//                           SharedPreferences prefs = await SharedPreferences.getInstance();
//                           String _token = prefs.getString(AppStorageInterface.LOGINTOKEN); // 存储token到本地
//                           return {
//                             'token': _token
//                           };
//                         });

//                         /// js端可以获取当前经纬度和位置信息
//                         controller.addJavaScriptHandler(handlerName: 'getCurrentLatlng', callback: (args) async {
//                           // return data to JavaScript side!
//                           Location _dataInfo = await LocateInfo.getLocation(context);
//                           return {
//                             'latitude': _dataInfo.latLng.latitude, 'longitude': _dataInfo.latLng.longitude, 'address': _dataInfo.aoiName
//                           };
//                         });

//                         /// js端进行app路由跳转
//                         controller.addJavaScriptHandler(handlerName: 'jumpRouter', callback: (args) {
//                           NavigatorUtil.jump(context, args[0]);
//                         });
//                       },
//                       onLoadStart: (InAppWebViewController controller, String url) async {
//                         // SharedPreferences prefs = await SharedPreferences.getInstance();
//                         // _webViewController.evaluateJavascript(source: "(function() { try { window.localStorage.setItem('token', '${prefs.getString(AppStorageInterface.LOGINTOKEN)}');return window.localStorage.authToken; } catch (err) { return err; } })();");
//                         // _webViewController.evaluateJavascript(source: "(function() { try { window.localStorage.clear('token'); } catch (err) { return err; } })();");
//                         /// webview设置token
//                         if (url.startsWith('weixin://wap/pay?') || url.startsWith('alipays:') || url.startsWith('alipay:')) {
//                           // controller.goBack();
//                           await launch(url);
//                         }
//                       },
//                       onLoadStop: (InAppWebViewController controller, String url) async {
//                         setState(() {
//                           this.url = url;
//                         });
//                       },
//                       onProgressChanged: (InAppWebViewController controller, int progress) {
//                         setState(() async {
//                           this.progress = progress / 100;
//                           this._title = await controller.getTitle();
//                         });
//                       },
//                       // shouldOverrideUrlLoading: (InAppWebViewController controller, ShouldOverrideUrlLoadingRequest url) async {
//                       //   if (Platform.isAndroid || url.iosWKNavigationType == IOSWKNavigationType.LINK_ACTIVATED) {
//                       //     controller.loadUrl(url: url.url, headers: {
//                       //       'Referer': url.url
//                       //     });
//                       //     if(url.url.startsWith("weixin://") || url.url.startsWith("alipays:")){
//                       //       launch(url.url);
//                       //       return ShouldOverrideUrlLoadingAction.CANCEL;
//                       //     } else {
//                       //       // controller.loadUrl(url: url.url);
//                       //       return ShouldOverrideUrlLoadingAction.ALLOW;
//                       //     }
//                       //   }
//                       //   return ShouldOverrideUrlLoadingAction.ALLOW;
//                       // },
//                       onLoadError: (InAppWebViewController controller, String url, int i, String s) async {
//                         // print('CUSTOM_HANDLER: $i, $s');
//                         controller.goBack();
//                         // String action = url.split(':').first;
//                         // List<String> customActions = [
//                         //   'tel',
//                         //   'whatsapp',
//                         //   'mailto',
//                         //   'alipays:',
//                         //   'weixin://wap/pay?'
//                         // ];
//                         // bool isCustomAction = customActions.contains(action);
//                         // if (isCustomAction) {
//                         //   await launch(
//                         //     url,
//                         //   );
//                         // }
//                         // _webViewController.goBack();
//                         // String action = url.split(':').first;
//                         // List<String> customActions = ['tel', 'whatsapp', 'mailto'];
//                         // bool isCustomAction = customActions.contains(action);
//                         // if (isCustomAction) {
//                         //   if (await canLaunch(url)) {
//                         //     await launch(
//                         //       url,
//                         //     );
//                         //   } else {
//                         //     throw 'Could not launch $url';
//                         //   }
//                         // }
//                       },
//                       onJsAlert: (InAppWebViewController controller, JsAlertRequest jsAlertRequest) async {
//                         JsAlertResponseAction action =
//                         await createAlertDialog(context, jsAlertRequest.message);
//                         return JsAlertResponse(
//                             handledByClient: true, action: action);
//                       },
//                     ),
//                 )
//               ],
//             ),
//           ),
//         ),
//         onWillPop: () async {
//           if (await _webViewController.canGoBack()) {
//             await _webViewController.goBack();
//             return false;
//           } else {
//             NavigatorUtil.goBack(context);
//             return true;
//           }
//         });
//   }

//   Future<JsAlertResponseAction> createAlertDialog(
//       BuildContext context, String message) async {
//     JsAlertResponseAction action;

//     await showDialog(
//       context: context,
//       builder: (BuildContext context) {
//         return AlertDialog(
//           content: Text(message),
//           actions: <Widget>[
//             FlatButton(
//               child: Text("Ok"),
//               key: Key("AlertButtonOk"),
//               onPressed: () {
//                 action = JsAlertResponseAction.CONFIRM;
//                 Navigator.of(context).pop();
//                 // setState(() {
//                 //   appBarTitle = "alert";
//                 // });
//               },
//             ),
//           ],
//         );
//       },
//     );

//     return action;
//   }

// }
